#pragma once

class MouseAnimatorCallback
{
public:
	virtual void AnimationDone(int iAnimationTime) = 0;
};



class MouseAnimator
{
	int					   X;
	int					   Y;
	int				       V;
	int					   A;
	MouseAnimatorCallback *Callback;
	HANDLE				   Thread;
	static unsigned int __stdcall ThreadFunc(void *iParams);
	static int AnimateMouse(int iX, int iY, int iV0, int iA);
	
public:

	MouseAnimator() { Callback = 0; Y = 0; Y = 0; V = 0; Thread = 0; } 
	void AnimateAsync(int iToXCoord, int iToYCoord, int iV, int iA, MouseAnimatorCallback *iCallback);
	int  AnimateSync(int iToXCoord, int iToYCoord, int iV, int iA) const;
};
